home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 22 / AACD 22.iso / AACD / Programming / powerd / lib / amigae.ass < prev    next >
Encoding:
Text File  |  1980-01-26  |  1.9 KB  |  89 lines

  1. START    movem.l    d0/a0,-(a7)    ;save initial values
  2.     movea.l    $4.w,a6
  3.     suba.l    a1,a1
  4.     jsr    (-294,a6)        ; FindTask()
  5.     move.l    d0,a4
  6.     tst.l    (172,a4)        ; process.cli
  7.     beq.s    workbench
  8.     movem.l    (a7)+,d0/a0    ;restore regs
  9.     bra.s    cli        ;and run the user prog
  10. workbench    lea    (92,a4),a0    ; process.msgport
  11.     jsr    (-384,a6)        ;wait for a message (WaitPort(())
  12.     lea    (92,a4),a0    ; process.msgport
  13.     jsr    (-372,a6)        ;then get it (GetMsg())
  14.     move.l    d0,_wbmessage        ;save it for later reply
  15.     movem.l    (a7)+,d0/a0    ;restore
  16. cli    bsr.s    _START        ;call our program
  17.     move.l    d0,-(a7)        ;save it
  18.     tst.l    _wbmessage
  19.     beq.s    exittodos        ;if I was a CLI
  20.     jsr    (-132,a6)        ; Forbid()
  21.     move.l    (_wbmessage,pc),a1
  22.     jsr    (-138,a6)        ; Permit()
  23. exittodos    move.l    (a7)+,d0        ;exit code
  24.     rts
  25.  
  26.     xdef    _wbmessage
  27. _wbmessage    dc.l    0
  28.  
  29.  
  30. _START    move.l    a0,_arg
  31.     clr.b    (-1,a0,d0.w)
  32.     movea.l    $4.w,a6
  33.     lea    (DOSName,pc),a1
  34.     moveq    #37,d0
  35.     jsr    (-552,a6)        ; OpenLibrary()
  36.     move.l    d0,_dosbase
  37.     beq.s    .FINISH
  38.  
  39.     movea.l    d0,a6
  40.     jsr    (-60,a6)        ; Output()
  41.     move.l    d0,_stdout
  42.     jsr    (-54,a6)        ; Input()
  43.     move.l    d0,_stdin
  44.  
  45.     movea.l    $4.w,a6
  46.     lea    (IntName,pc),a1
  47.     moveq    #37,d0
  48.     jsr    (-552,a6)        ; OpenLibrary()
  49.     move.l    d0,_intuitionbase
  50.     beq.s    .CLOSEDOS
  51.  
  52.     lea    (GfxName,pc),a1
  53.     moveq    #37,d0
  54.     jsr    (-552,a6)        ; OpenLibrary()
  55.     move.l    d0,_gfxbase
  56.     beq.s    .CLOSEINT
  57.  
  58.  
  59.     xref    _main
  60.     jsr    _main        ; a6 is stored
  61.     move.l    d0,d2
  62.  
  63.     movea.l    _gfxbase,a1
  64.     jsr    (-414,a6)        ; CloseLibrary()
  65. .CLOSEINT    movea.l    _intuitionbase,a1
  66.     jsr    (-414,a6)        ; CloseLibrary()
  67. .CLOSEDOS    movea.l    _dosbase,a1
  68.     jsr    (-414,a6)        ; CloseLibrary()
  69. .FINISH    move.l    d2,d0
  70.     rts
  71. ****************************************
  72.     xdef    _dosbase
  73.     xdef    _intuitionbase
  74.     xdef    _gfxbase
  75.     xdef    _arg
  76.     xdef    _stdout
  77.     xdef    _stdin
  78. ****************************************
  79. _dosbase        dc.l    0
  80. _intuitionbase    dc.l    0
  81. _gfxbase        dc.l    0
  82. _arg        dc.l    0
  83. _stdout        dc.l    0
  84. _stdin        dc.l    0
  85. ****************************************
  86. DOSName    dc.b    'dos.library',0
  87. IntName    dc.b    'intuition.library',0
  88. GfxName    dc.b    'graphics.library',0
  89.